﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ImobitechDao;
using ImobitechDao.Repositories;

namespace ImobitechModel.Facade
{
    public class ImovelFacade
    {
        private static ImovelFacade instance;

        private ImovelFacade()
        {

        }

        public static ImovelFacade getInstance()
        {
            if (instance == null)
                instance = new ImovelFacade();

            return instance;
        }

        public Object inserirImovel(Imovel imovel)
        {
            IImovelRepository _imovelRepositorio = new ImovelRepository(Contexto.Instance.Context);
            return _imovelRepositorio.Create(imovel);
        }

        public Object editaImovel(Imovel imovel)
        {
            IImovelRepository _imovelRepositorio = new ImovelRepository(Contexto.Instance.Context);
            return _imovelRepositorio.Update(imovel);
        }

        public Object retornaImovel(int id)
        {
            IImovelRepository _imovelRepositorio = new ImovelRepository(Contexto.Instance.Context);
            return _imovelRepositorio.GetById(id);
        }

        public Object retornaImoveis()
        {
            IImovelRepository _imovelRepositorio = new ImovelRepository(Contexto.Instance.Context);
            return _imovelRepositorio.GetAll();
        }

        public Object retornaDependencias()
        {
            IDependenciasRepository _depedenciaRepositorio = new DependenciasRepository(Contexto.Instance.Context);
            return _depedenciaRepositorio.GetAll();
        }

        public Object retornaDependencia(int id)
        {
            IDependenciasRepository _depedenciaRepositorio = new DependenciasRepository(Contexto.Instance.Context);
            return _depedenciaRepositorio.GetById(id);
        }

        public Object inserirFotos(List<Fotos> fotos)
        {
            IFotosRepository _fotosRepositorio = new FotosRepository(Contexto.Instance.Context);
            for (int i = 0; i < fotos.Count; i++)
            {
                _fotosRepositorio.Create(fotos[i]);
             //   Contexto.Instance.Context.Attach(
            }
            return null;
        }

        public Object retornaTipoImoveis()
        {
            ITipoImovelRepository _tipoImovelRepositorio = new TipoImovelRepository(Contexto.Instance.Context);
            return _tipoImovelRepositorio.GetAll();
        }

        public Object retornaLocatarios(int id)
        {
            IPessoaPapelImovelRepository _pessoaPapelImovelRepositorio = new PessoaPapelImovelRepository(Contexto.Instance.Context);
            return _pessoaPapelImovelRepositorio.retornaLocatarios(id);
       }

        public Object salvarReparoConserto(ReparoConserto reparoConserto)
        {
            IReparoConsertoRepository _reparoConsertoRepositorio = new ReparoConsertoRepository(Contexto.Instance.Context);
            return _reparoConsertoRepositorio.Create(reparoConserto);
        }

        public Object recuperarReparoConserto(int id)
        {
            IReparoConsertoRepository _reparoConsertoRepositorio = new ReparoConsertoRepository(Contexto.Instance.Context);
            return _reparoConsertoRepositorio.GetById(id);
        }

        public Object atualizarReparoConserto(ReparoConserto reparoConserto)
        {
            IReparoConsertoRepository _reparoConsertoRepositorio = new ReparoConsertoRepository(Contexto.Instance.Context);
            return _reparoConsertoRepositorio.Update(reparoConserto);
        }

        public Object buscaReparoConserto(int idImovel)
        {
            IReparoConsertoRepository _reparoConsertoRepositorio = new ReparoConsertoRepository(Contexto.Instance.Context);
            return _reparoConsertoRepositorio.retornaReparoConserto(idImovel);
        }

        public Object buscaReparoConserto()
        {
            IReparoConsertoRepository _reparoConsertoRepositorio = new ReparoConsertoRepository(Contexto.Instance.Context);
            return _reparoConsertoRepositorio.GetAll();
        }

        public Object buscaImoveisDono(int IdPessoa)
        {
            IPessoaPapelImovelRepository _pessoaPapelImovelRepositorio = new PessoaPapelImovelRepository(Contexto.Instance.Context);
            return _pessoaPapelImovelRepositorio.retornaDonos(IdPessoa);
        }

        public Object retornaTipoImovel(int id)
        {
            ITipoImovelRepository _tipoImovelRepositorio = new TipoImovelRepository(Contexto.Instance.Context);
            return _tipoImovelRepositorio.GetById(id);
        }

    }
}